/**
 * Created by sxwu on 14-2-14.
 */
/**
 * 数据库模块
 */

var log = require('./log');
var config = require("../config");

var options = {
    'host': config.db_host,
    'port': config.db_port,
    'database': config.db_name,
    'user': config.db_user,
    'password': config.db_passwd,
    //'charset': config.db_charset,
    'connectionLimit': config.db_conn_limit,
    'supportBigNumbers': true,
    'dateStrings':true,
    'bigNumberStrings': true
};

var mysql = require('mysql');


var pool = mysql.createPool(options);

/**
 * 释放数据库连接
 */
exports.release = function(connection) {
    connection.end(function(error) {
        log.debug('Connection closed');
    });
};

/**
 * 执行查询
 */
exports.execQuery = function(options) {
    pool.getConnection(function(error, connection) {
        if(error) {
            //log.error('DB-获取数据库连接异常！');
            console.log("数据库操作错误："+require('util').inspect(error));
            options['handler']( error,"");
            return;
            //throw new Error('DB-获取数据库连接异常！');
        }

        // 查询参数
        var sql = options['sql'];
        var args = options['args'];
        var handler = options['handler'];

        // 执行查询
        if(!args) {
            var query = connection.query(sql, function(error, results) {
                if(error) {
                    //log.error('DB-执行查询语句异常！');
                    console.log("数据库操作错误："+require('util').inspect(error));
                }
                // 处理结果
                handler(error,results);
            });
            log.debug(query.sql);
        } else {
            var query = connection.query(sql, args, function(error, results) {
                if(error) {
                    //console.log("DB-执行查询语句异常！");
                    //handler( error);
                    console.log("数据库操作错误："+require('util').inspect(error));
                }
                handler(error,results);

            });
            log.debug(query.sql);
        }

        // 返回连接池
        connection.release(function(error) {
            if(error) {
                //log.error('DB-关闭数据库连接异常！');
                console.log("数据库操作错误："+require('util').inspect(error));
            }
            handler(error,"");
        });
    });
};
